home *** CD-ROM | disk | FTP | other *** search
-
- -- !Help -- !iicAlarm 1.00
-
- von Andreas Barth, May 1994
-
- Eine Hardware-Erweiterung um den Computer automatisch ein/auszuschalten.
-
- !iicAlarm benutzt die Alarm-Funktionen des Archimedes-Uhrenbaustein PCF8583,
- die zur Zeit unbenutzt sind.
- Man kann eine Alarm-Zeit setzen, zu der dann eine Leitung geschaltet wird.
- Mit einer kleinen Schaltung kann man dann den Computer einschalten.
- Unter dem Desktop werden die gewünschten Programme durch die !Alarm-Applikation
- aufgerufen, und am Ende eines automatischen Ablaufes wird die nächste Alarm-
- Zeit gesetzt und der Rechner durch eine IO-Leitung ausgeschaltet.
-
- Benötigt RiscOS 3.
-
- Einleitung
- ----------
- Der Uhrenbaustein im Archimedes, ein PCF8583, hat 240 Bytes CMOS Ram,
- 8 Bytes Uhreninformationen und 8 Bytes Alarmregister, die zur Zeit unbenutzt
- sind und auch als Ram benutzt werden könnten.
- RiscOS benutzt die 8 Bytes Alarmregister zur Zeit nicht.
- Der Baustein besitzt einen Alarm-Ausgang, der durch das Alarm-System gesetzt
- werden kann und zu einer vorgegebenen Zeit etwas schalten kann. Benutzt man
- eine einfache FlipFlop-Schaltung, deren Eingänge um mehrere Sekunden verzögert
- werden und dessen Ausgang ein (elektronisches Last-)Relais ansteuern kann,
- so kann man den Computer damit schalten.
- Man benötigt dann noch etwas Software, die den Alarm-Status ermittelt oder
- die Alarm-Zeit setzt.
- Um es möglichst einfach zu machen, benutze ich die !Alarm-Applikation um die
- Zeit-Daten zu verwalten. Unter RiscOS 3 kann !Alarm Task-Alarme auslösen, die
- ein Programm, *Command oder Batchfile starten können.
- So muß die iicAlarm-Software nur noch die Alarm-Datenbank nach der nächsten
- Task-Alarm-Zeit durchsuchen um sie im Uhrenbaustein zu setzen.
- Die Verwaltung obliegt somit völlig der !Alarm-Applikation.
-
-
- Software
- --------
- !iicAlarm greift an den wesentlichen Teilen des Rechnersystems
- in die Kontrollen ein und muß beim einschalten/booten und ausschalten/
- resetten berücksichtigt werden.
-
- Fünf kleine Programme erleichtern einem die Arbeit.
- Während des Rechnerlaufes sollte nun folgendes passieren:
-
- <Der Rechner geht an und bootet von Diskette oder Festplatte>
- - Beim normalen BOOT-Vorgang wird die Umgebungsvariable <Alarmfile> gesetzt.
- (z.B. *Set Alarmfile System:Alarms)
- Sie zeigt auf DIE gültige !Alarm-Datei, die auch bei normaler Benutzung
- des Desktops immer geladen werden soll. !iicAlarm greift auf diese Datei zu
- um die Zeit herauszufinden an dem der Rechner automatisch eingeschaltet
- werden soll.
-
- - !iicAlarm -- Muß beim Bootvorgang aufgerufen werden.
- Es stellt fest, auf welche Art und Weise der Rechner eingeschaltet wurde
- und ob das Alarmsystem bereits aktiviert war.
- Daraufhin werden einige Umgebungsvariablen gesetzt.
- Liest sich die Alarmdatei durch und sucht die aktuelle und die nächste
- Task-Alarm-Zeit. (Bug: Wenn der aktuelle Alarm-Rekord durch ein Repeat
- auch zum nächsten wird, haben wir einen Fehler. Das kann die Routine
- nämlich noch nicht.)
- Das keyScan-Modul wird geladen.
-
- - Im Desktop muß !Alarm gestartet werden mit <Alarmfile> als Argument,
- damit es direkt mit dem richtigen Alarmfile anfängt.
- !Alarm startet auch die gewünschten Programme und verwaltet die Zeiten wie
- gewohnt. Solange der Rechner an ist, werden alle Task-Alarms wie gewohnt
- gestartet und verwaltet.
-
-
-
- - !AlarmOff -- *AlarmOff
- Kann jederzeit aufgerufen werden, um die Alarmfunktionen auszuschalten,
- und ein weiteres automatisches einschalten des Rechners zu unterbinden.
- Der Alarmzustand der Uhr wird deaktiviert und verriegelt.
-
- - !AlarmOn -- *AlarmOn
- Kann jederzeit aufgerufen werden, um die Alarmfunktionen zu aktivieren.
- Es wird lediglich der Modus gesetzt und die Uhr auf einen Defaultzustand
- gebracht.
- !AlarmOff und AlarmSet werden aufgerufen.
-
-
- - !AlarmQuit -- *AlarmQuit
- Kann bei automatischen Programmabläufen am Ende aufgerufen werden, um den
- Computer wieder abzuschalten. Macht quasi nichts, wenn der User eingeschaltet
- hat oder neu initialisiert wurde. Schaltet aber einfach aus, wenn der
- Rechner automatisch läuft.
-
- - !AlarmShut -- *AlarmShut, *Bye
- Shutdown-Programm. Muß am Ende der Arbeit vom User benutzt werden, um die
- nächste Alarmzeit in der Uhr zu setzen. Schaltet außerdem den Rechner aus.
- Entspricht der Shutdown-Funktion des Taskmanagers (Shift-Control-F12).
-
- Einfache Abläufe können nun mit Batchfiles erzeugt werden, die zu der
- vorgesehenen Zeit durch !Alarm als Task-Alarm gestartet werden können.
- Beim Ausschalten des Rechners sucht die SetAlarm-Routine die nächste
- Task-Alarm-Zeit und setzt sie in der Uhr.
-
- Die Programme sind auch als CLI-Befehle erreichbar (ohne '!').
- So kann der automatische Ablauf einfach mit '*AlarmQuit' beendet werden.
-
- - Das keyScan-Modul schaltet sich in den InsV-Vektor und fängt die Taste
- <ShiftControlF12> ab. Unter dem Wimp installiert es einen kleinen Modul-Task
- der bei gedrückter Taste einen Taskcommand absetzt:
- einfacher Tastendruck: "*Filer_OpenDir ...Tools"
- zweifacher Tastendruck: "*AlarmShut"
- Man sollte also die Shutdown-Funktion im TaskManager-Menü nicht mehr
- benutzen.
-
- Hardware
- --------
- Achtung !
- - Diese Version mit Schaltung ist nur für A3xx/A4xx/A3000 geeignet und belegt
- den normalerweise ungenutzten Auxiliary-IO Port: Alarm und Aux1/2.
- - A3000 haben keinen AuxIOport. Man muß ihn selbst zusammenstellen:
- Benötigt werden: Alarm: IC6, pin 7 -> pin 5 unseres AuxIO-Anschlusses.
- Aux 1: IC18 pin 17 -> pin 3 unseres AuxIO-Anschlusses.
- Aux 2: IC18 pin 18 -> pin 2 unseres AuxIO-Anschlusses.
- - Nicht geeignet für neuere Rechner mit IOEB usw. (A3010,3020,4000,5000), da
- diese nicht über den Auxiliary-IOPort verfügen und diese Leitungen anders
- benutzten !!
- - Rechner mit VIDC-Enhancer benutzen manchmal Aux1 zum umschalten der
- Quarzfrequenzen. Auch das ist nicht sehr geeignet. Also herausfinden
- welche Leitung benutzt wird und für uns die andere benutzen.
- In den Programmen 'SwitchOff' und '!AlarmShut' werden die Auxleitungen
- gesetzt, Bit 0 und Bit 1 können für Aux1/2 respektive geändert werden,
- direkt vor dem CALL-Aufruf.
-
-
- Funktion
- Der Uhrenbaustein im Archimedes ist ein PCF8583, eine Uhr mit Kalender, Alarm
- und Ram. Der Alarm kann eine Leitung am IC auf Masse schalten (open collector).
- Er kann durch diverse Möglichkeiten aktiviert werden: Tagesalarm, Datumsalarm,
- Timeralarm. Wir benutzen aber nur den Datumsalarm.
- Im Defaultzustand der Uhr, zB. nach einem Reset durch Batteriewechsel, gibt
- die Alarm-Leitung ein Sekunden-Signal aus. Das ist sehr ärgerlich, denn unsere
- Schaltung muß schon sehr sicher verhindern können, daß der Rechner im
- Sekundentakt ein- und ausgeschaltet wird. Sie soll sehr wenig Energie
- verbrauchen, denn sie wird mit einer Batterie betrieben. Sie soll unaufwendig
- sein.
- Siehe Schaltung in Abbildung Circuit.
- Siehe Bestückungsplan in Abblidung PCB.
- Es handelt sich um ein einfaches Flipflop, welches durch ALARM gesetzt und
- durch AUX1 oder 2 zurückgesetzt wird. Das erste Gatter vom Eingang aus liefert
- dabei lediglich einen bekannten Strom/Spannungspegel der dann in die
- Verzögerungsglieder gehen. So muß ein Eingangssignal mindestens 5 Sekunden
- lang aktiv und stabil bleiben bevor SET/RESET ausgelöst werden.
- Da die Schaltung sehr hochohmig ist, einige Leitungen aber im hochspannugs-
- bereich herumliegen können, kann es sein, daß elektromagnetische Einstreuungen
- die Funktion stören. Ist mir aber noch nicht passiert.
-
- Einbau der Schaltung
- Die fertig bestückte Platine besitzt 5 Anschlüsse:
- 1) Auxiliary-I/O-Connector
- 5polig, wird mit PL10 (beim A3xx/4xx) im Rechner verbunden. Pin 1 ist
- jeweils gekennzeichnet. Liefert die Steuersignale von der Uhr und vom
- Benutzer. Die Signale ab Pin 1 sind: Masse, Aux2, Aux1, C4, Alarm.
- 2) und 3) Power bzw. Batterie-Anschlüsse
- jeweils 2polig. Wird einmal mit dem Rechnernetz verbunden und dazu mit
- dem eingebauten Batteriepack. Kann sehr gut an den kleinen Floppy-Anschluß
- angeschlossen werden. Der markierte Leiter dort ist +5V, dann 2 mal Masse
- und 12V.
- 4) Switch
- 2polig. Liefert eine mit 47Ohm gesicherte Versorgungsspannung für ein Relais.
- Die Masse wird geschaltet durch einen BS108, einen VMOSFET. Der verträgt
- 200V und treibt max. 260mA. Leider würde das unsere Batterie nicht gerne
- haben. Ich empfehle ein ELR (elektronisches Lastrelais), da man diese Dinger
- auf Elektronikmärkten billig bekommt ( < 7DM) und sie sich mit 3V, 1.2mA
- ansteuern lassen, dank ihres Optokopplers. Vorsicht allerdings bei
- induktiven Lasten ! Man kann damit keine Energiesparlampe anwerfen...
- Polarität am Switch-Anschluß beachten.
- 5) Ein/Ausschalter
- Im Schaltplan, Version 1.00, ist ein zweiter Eingang verzeichnet und auf der
- Platine auch eingebaut. Der eignet sich aber nicht als Einschalter für den
- Benutzer, es sei denn, man hat die Nerven jedesmal 5 Sekunden zu warten, bis
- sich was tut. Im Schaltplan ist eine Änderung verzeichnet die man tunlichst
- einbauen sollte. Man kann mit dem neuen Anschluß zwei Taster bedienen, einen
- zum einschalten, einen zum ausschalten. Montiert man zB. einen Kipptaster
- an die Vorderfront des Gerätes, so kann man endlich mal bequem ein- und
- ausschalten.
- Der Aus-Taster FUNKTIONIERT NICHT, wenn die Alarm-Leitung von der Uhr
- gesetzt/aktiv ist. D.h. es ist ein Alarm eingetreten und der Rechner möchte
- sich nun eingeschaltet wissen und sein Programm starten.
- Man benötigt in diesem Fall wenigstens ein Programm, das die Alarm-Leitung
- deaktiviert. Jedes !iicAlarm-Tool kann dies machen.
- Nichtsdestotrotz braucht man ein Programm, um die Leitung zu deaktivieren.
- Wenn man gerade keines zur Hand hat, muß man leider den Stecker ziehen oder
- die Mehrfachdose am Schalter ausschalten. Die nächste Platinenversion
- ist da bestimmt intelligenter.
-
- Zum Schluß
- ----------
- Die Rechte von !iicAlarm verbleiben bei mir. Die Applikation darf beliebig
- kopiert und weitergegeben werden für nichtkommerzielle Anwendungen und nur
- solange alles and alles unverändert kopiert wird.
- Ich übernehme keine Garantien oder Verantwortungen für was auch immer.
- Für Kommentare bin ich immer offen:
- Andreas Barth
- Karl-Eberhardstr. 9
- W-51643 Gummersbach
- Germany
- Tel. 02261/27042
- EMail: Andreas_Barth@ruba.rz.ruhr-uni-bochum.de (etwa bis Sept. 1994)
-
- ToDo
- -----
- Well, it works, eh ?
- - Pack everything in a small module.
- - build a better circuit.
-